﻿/*************************************************************
 * Software of blackcore
 *
 * CLRVersion:4.0.30319.586
 * MachineName:SPACE
 * Author:Andy Huang
 * Email:itblackhole@gmail.com
 * DateTime：6/13/2013 10:12:21 AM
 * Function：
 *************************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Sob.Common
{
    public class HtmlHelper
    {
        #region ******************************Private Property******************************
        #endregion ******************************Private Property******************************


        #region ******************************Public Property******************************
        #endregion ******************************Public Property******************************


        #region ******************************Structure******************************
        #endregion  ******************************Structure******************************


        #region ******************************Private Method******************************
        #endregion ******************************Private Method******************************


        #region ******************************Public Method******************************
        /// <summary>
        /// 移除Html标签
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        [Obsolete("性能不佳，请不要使用")]
        public string RemoveHTMLTags(string content)
        {
            List<string> regexs = new List<string>();
            regexs.Add(@"<script[^>]*?>.*?</script>");
            regexs.Add(@"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>");
            regexs.Add(@"([\r\n])[\s]+");
            regexs.Add(@"&(quot|#34);");
            regexs.Add(@"&(amp|#38);");
            regexs.Add(@"&(lt|#60);");
            regexs.Add(@"&(gt|#62);");
            regexs.Add(@"&(nbsp|#160);");
            regexs.Add(@"&(iexcl|#161);");
            regexs.Add(@"&(cent|#162);");
            regexs.Add(@"&(pound|#163);");
            regexs.Add(@"&(copy|#169);");
            regexs.Add(@"&#(\d+);");
            regexs.Add(@"-->");
            regexs.Add(@"<!--.*\n");
            List<string> replaces = new List<string>();
            replaces.Add("");
            replaces.Add("");
            replaces.Add("");
            replaces.Add("\"");
            replaces.Add("&");
            replaces.Add("<");
            replaces.Add(">");
            replaces.Add(">");
            replaces.Add(" ");
            replaces.Add("\xa1");//chr(161)
            replaces.Add("\xa2");//chr(162)
            replaces.Add("\xa3");//chr(163)
            replaces.Add("\xa9");//chr(169)
            replaces.Add("");
            replaces.Add("");
            replaces.Add("\r\n");
            replaces.Add("");
            string result = content;
            for (int i = 0; i < regexs.Count; i++)
            {
                result = new Regex(regexs[i], RegexOptions.Multiline | RegexOptions.IgnoreCase).Replace(result, replaces[i]);
            }
            result.Replace("<", "");
            result.Replace(">", "");
            result.Replace("\r\n", "");

            return result;
        }

        
        #endregion ******************************Public Method******************************
    }
}
